home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / AOCE / Development Tools / Sample Code / Standard Catalog Package / DTS AddressOMatic / Src / AOMFindManager.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-16  |  5.4 KB  |  239 lines  |  [TEXT/KAHL]

  1. /*                                AOMCreatePanels.c                                */
  2. /*
  3.  * AddressOMatic Sample
  4.  * AOMCreatePanels.c
  5.  * Copyright © 1993 Apple Computer Inc. All rights reserved.
  6.  */
  7. #include "AddressOMaticPrivate.h"
  8.  
  9. /*
  10.  * This is a jacket function for SDPNewPanel.
  11.  */
  12. OSErr
  13. _AOMFindCreate(
  14.         register AddressOMaticPtr    aomPtr,
  15.         const RStringPtr            *typesList,            /* Types to select        */
  16.         unsigned long                typeCount,            /* Number of types        */
  17.         short                        simultaneousSearchCount,
  18.         SDPFindPanelFocus            initialFocus,
  19.         DirMatchWith                matchTypeHow,        /* Enumeration mode        */
  20.         short                        helpResourceID        /* Help strings            */
  21.     )
  22. {
  23.         OSErr                        status;
  24.         Point                        panelLoc;
  25.         
  26.         /*
  27.          * Life is too short to figure out MPW
  28.          */
  29.         SetPt(&panelLoc, PANEL.left, PANEL.top);    /* topLeft(PANEL)        */
  30.         status = SDPNewFindPanel(
  31.                     &AOM.findPanel,                    /* Result                */
  32.                     AOM.window,                        /* In this window        */
  33.                     panelLoc,                        /* At this location        */
  34.                     kStandardFindLayout,            /* Normal layout        */
  35.                     FALSE, FALSE,                    /* Initially invisible    */
  36.                     typesList,                        /* Types to browse        */
  37.                     typeCount,                        /* Number of types        */
  38.                     matchTypeHow,                    /* Understand typeList    */
  39.                     AOM.identity,                    /* User identity        */
  40.                     simultaneousSearchCount,        /* Configure search        */
  41.                     initialFocus,                    /* Focus around what?    */
  42.                     (long) aomPtr                    /* RefCon -> AOM        */
  43.                 );
  44.         LOG(status, "\pSDPNewFindPanel");
  45.         if (status == noErr && helpResourceID != 0) {
  46.             status = SDPSetFindPanelBalloonHelp(
  47.                     AOM.findPanel,
  48.                     helpResourceID
  49.                 );
  50.             LOG(status, "\pSDPSetFindPanelBalloonHelp");
  51.         }
  52.         if (status == noErr) {
  53.             status = SDPInstallFindPanelBusyProc(
  54.                     AOM.findPanel,
  55.                     _AOMAnimateFindPanel
  56.                 );
  57.         }
  58.         return (status);
  59. }
  60.  
  61. OSErr
  62. _AOMFindDispose(
  63.         register AddressOMaticPtr    aomPtr
  64.     )
  65. {
  66.         OSErr                        status;
  67.  
  68.         if (AOM.findPanel == NULL)
  69.             status = noErr;
  70.         else {
  71.             status = SDPDisposeFindPanel(AOM.findPanel);
  72.             LOG(status, "\pSDPDisposeFindPanel");
  73.             AOM.findPanel = NULL;
  74.         }
  75.         return (status);
  76. }
  77.  
  78. OSErr
  79. _AOMFindShow(
  80.         register AddressOMaticPtr    aomPtr,
  81.         Boolean                        isShow
  82.     )
  83. {
  84.         OSErr                        status;
  85.  
  86.         if (AOM.findPanel == NULL)
  87.             status = noErr;
  88.         else {
  89.             status = (isShow)
  90.                     ? SDPShowFindPanel(AOM.findPanel)
  91.                     : SDPHideFindPanel(AOM.findPanel);
  92.             LOG(status, "\pSDPShow/HideFindPanel");
  93.         }
  94.         return (status);
  95. }
  96.  
  97. OSErr
  98. _AOMFindEnable(
  99.         register AddressOMaticPtr    aomPtr,
  100.         Boolean                        isEnable
  101.     )
  102. {
  103.         OSErr                        status;
  104.  
  105.         if (AOM.findPanel == NULL)
  106.             status = noErr;
  107.         else {
  108.             status = SDPEnableFindPanel(AOM.findPanel, isEnable);
  109.             LOG(status, "\pSDPEnableFindPanel");
  110.         }
  111.         return (status);
  112. }
  113.  
  114. OSErr
  115. _AOMFindSetFocus(
  116.         register AddressOMaticPtr    aomPtr,
  117.         SDPFindPanelFocus            newFocus
  118.     )
  119. {
  120.         OSErr                        status;
  121.  
  122.         if (AOM.findPanel == NULL)
  123.             status = noErr;
  124.         else {
  125.             status = SDPSetFindPanelFocus(AOM.findPanel, newFocus);
  126.             LOG(status, "\pSDPSetFindPanelFocus");
  127.         }
  128.         return (status);
  129. }
  130.  
  131. OSErr
  132. _AOMFindUpdate(
  133.         register AddressOMaticPtr    aomPtr,
  134.         RgnHandle                    drawRgn
  135.     )
  136. {
  137.         OSErr                        status;
  138.  
  139.         status = noErr;
  140.         if (AOM.findPanel != NULL)
  141.             status = SDPUpdateFindPanel(AOM.findPanel, drawRgn);
  142.         LOG(status, "\pSDPUpdateFindPanel");
  143.         return (status);
  144. }
  145.  
  146. OSErr
  147. _AOMFindStartStop(
  148.         register AddressOMaticPtr    aomPtr,
  149.         Boolean                        startFind
  150.     )
  151. {
  152.         OSErr                        status;
  153.  
  154.         if (FIND_SELECTED == FALSE
  155.          || AOM.findPanel == NULL
  156.          || startFind == FINDING)
  157.             status = noErr;
  158.         else if (startFind) {
  159.             status = SDPStartFind(AOM.findPanel);
  160.         }
  161.         else {
  162. NOTE("\pStopping find");
  163.             status = SDPStopFind(AOM.findPanel);
  164. NOTE("\pFind stopped");
  165.         }
  166.         LOG(status, "\pSDPStartStopFind");
  167.         return (status);
  168. }
  169.  
  170. /*
  171.  * This handles all of the selection extraction in one big lump.
  172.  * Returns kOCENoSuchRecord if there is no selection.
  173.  *
  174.  * Special error status:
  175.  *        kOCEOperationDenied            Must stop finding before calling extractor
  176.  *        kOCENoSuchRecord            Nothing is selected
  177.  */
  178. OSErr
  179. _AOMFindExtractSelection(
  180.         register AddressOMaticPtr    aomPtr,
  181.         unsigned short                *selectionSize,
  182.         PackedDSSpecPtr                *dsSpec
  183.     )
  184. {
  185.         OSErr                        status;
  186.         SDPFindPanelState            findState;
  187.         
  188.         *selectionSize = 0;
  189.         if (AOM.findPanel == NULL)
  190.             status = paramErr;                        /* Can't happen                */
  191.         else if (FINDING)                            /* Stop finding first        */
  192.             status = kOCEOperationDenied;
  193.         else {
  194.             status = SDPGetFindPanelState(AOM.findPanel, &findState);
  195.         }
  196.         if (status == noErr && (findState & kSDPItemIsSelectedMask) == 0)
  197.             status = kOCENoSuchRecord;                /* Oops, nothing selected    */
  198.         if (status == noErr)                        /* Looking good, get size    */
  199.             status = SDPGetFindPanelSelectionSize(AOM.findPanel, selectionSize);
  200.         if (status == noErr) {                        /* Allocate selection        */
  201.             *dsSpec = (PackedDSSpecPtr) NewPtr(*selectionSize);
  202.             status = MemError();
  203.         }
  204.         if (status == noErr) {                        /* If ok, get the data        */
  205.             status = SDPGetFindPanelSelection(AOM.findPanel, *dsSpec);
  206.             if (status != noErr) {                    /* Oops, dump the buffer    */
  207.                 DisposePtr((Ptr) *dsSpec);
  208.                 *selectionSize = 0;
  209.                 *dsSpec = NULL;
  210.             }
  211.         }
  212.         LOG(status, "\p_AOMFindExtractSelection");
  213.         return (status);
  214. }
  215.  
  216. void
  217. _AOMFindAdjust(
  218.         register AddressOMaticPtr    aomPtr
  219.     )
  220. {
  221.         (void) SDPMoveFindPanel(AOM.findPanel, PANEL.left, PANEL.top);
  222. }
  223.  
  224. OSErr
  225. _AOMFindSetIdentity(
  226.         register AddressOMaticPtr    aomPtr,
  227.         AuthIdentity                userIdentity
  228.     )
  229. {
  230.         OSErr                        status;
  231.         
  232.         if (AOM.findPanel == NULL)
  233.             status = noErr;
  234.         else {
  235.             status = SDPSetFindIdentity(AOM.findPanel, userIdentity);
  236.         }
  237.         return (status);
  238. }
  239.